package com.hgkj.system.service;

import com.hgkj.system.domain.SysRole;
import com.hgkj.system.domain.dto.request.AssignRoleMenu;
import com.hgkj.system.domain.vo.RoleMenuTree;

import java.util.List;
import java.util.Map;

public interface SysRoleService {

    /**
     * 根据用户ID获取用户角色集合
     * @param userId 用户ID
     * @return 拥有的角色集合
     */
    List<String> getRolesByUserId(long userId);

    /**
     * 查询角色列表
     * @param role 附加信息
     * @return list
     */
    List<SysRole> getRoleList(SysRole role);

    /**
     * 插入角色信息
     * @param role 角色信息
     * @return 操作行数
     */
    int insertRole(SysRole role);

    /**
     * 修改角色信息
     * @param role 角色信息
     * @return 操作行数
     */
    int updateRole(SysRole role);

    /**
     * 删除角色
     * @param roleId 角色ID
     * @return 操作行数
     */
    int deleteRole(Long roleId);

    /**
     * 查询角色的权限树
     * @param roleId 角色ID
     * @return permsTree
     */
    Map<String, Object> assignList(Long roleId);

    /**
     * 分配角色菜单权限
     * @param assignRoleMenu assign
     */
    void assign(AssignRoleMenu assignRoleMenu);

}
